home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / vol7n9.arc / MOUSDEMO.BAS < prev    next >
BASIC Source File  |  1988-04-08  |  3KB  |  122 lines

  1. '******** MousDemo.Bas
  2.  
  3. If FNMouseInstalled% Then
  4.    Screen 0 : Cls
  5.    Print "Text mode cursor . . . move the mouse, then press any key"
  6.    Call MouseOn
  7.    While Inkey$ = "" : Wend
  8.  
  9.    Screen 9
  10.    Cls : Print "Default graphics cursor . . . press a button to continue"
  11.    Call LoadCursor
  12.    Call MouseOn
  13.  
  14. WaitButton:
  15.    Call Mouse(3, Mouse%, X%, Y%)
  16.    If Mouse% = 0 Goto WaitButton
  17.  
  18.    'Mouse% is zero if no button is pressed,
  19.    '  1 if left button, 2 if right button,
  20.    '  3 if both buttons
  21.  
  22.    Cls : Print "Hand cursor . . . press any key"
  23.    Call LoadCursor
  24.    While Inkey$="":Wend
  25.  
  26.    Cls : Print "Hour Glass cursor . . . press any key"
  27.    Call LoadCursor
  28.    While Inkey$="":Wend
  29.    Call MouseOff
  30. Else
  31.    Cls
  32.    Print "Mouse Driver Not Installed"
  33.    Stop
  34. End if
  35.  
  36. Screen 0
  37. Cls
  38. Print "Program Over"
  39. End
  40.  
  41.  
  42. '---------------------------------------
  43. 'returns -1 if mouse installed, 0 if not
  44.  
  45. Def FNMouseInstalled%
  46.     Local X%
  47.     Reg 1, X%
  48.     Call Interrupt 51
  49.     FnMouseInstalled% = Reg(1)
  50. End Def
  51.  
  52. '---------------------------------
  53. 'similar to Microsoft's mouse call
  54.  
  55. Sub Mouse(M1%, M2%, M3%, M4%)
  56.    Reg 1, M1%         'AX
  57.    Reg 2, M2%         'BX
  58.    Reg 3, M3%         'CX
  59.    Reg 4, M4%         'DX
  60.    Call Interrupt 51
  61.    M1% = Reg(1)
  62.    M2% = Reg(2)
  63.    M3% = Reg(3)
  64.    M4% = Reg(4)
  65. End Sub
  66.  
  67. '----------------
  68. 'shows the cursor
  69.  
  70. Sub MouseOn
  71.    M1% = 1
  72.    Call Mouse(M1%, M2%, M3%, M4%)
  73. End Sub
  74.  
  75. '----------------
  76. 'hides the cursor
  77.  
  78. Sub MouseOff
  79.    M1% = 2
  80.    Call Mouse(M1%, M2%, M3%, M4%)
  81. End Sub
  82.  
  83. '--------------------------------------
  84. 'load a graphics cursor from Data items
  85.  
  86. Sub LoadCursor
  87.    Local Cursor%()
  88.    Dim Cursor%(0:15,0:1)
  89.  
  90.    For X% = 0 To 1
  91.        For Y% = 0 To 15
  92.            Read Pattern$
  93.            Cursor%(Y%, X%) = Val("&H" + Pattern$)
  94.        Next
  95.    Next
  96.  
  97.    Reg 1, 9                       'AX
  98.    Reg 2, 0                       'BX
  99.    Reg 3, 0                       'CX
  100.    Reg 9, VarSeg(Cursor%(0,0))    'ES
  101.    Reg 4, VarPtr(Cursor%(0,0))    'DX
  102.    Call Interrupt 51
  103.  
  104.    'defines the arrow cursor (graphics mode only)
  105.    Data 3FFF, 1FFF, 0FFF, 07FF, 03FF, 01FF, 00FF, 007F
  106.    Data 003F, 001F, 01FF, 10FF, 30FF, F87F, F87F, FC3F
  107.    Data 0000, 4000, 6000, 7000, 7800, 7C00, 7E00, 7F00
  108.    Data 7F80, 78C0, 7C00, 4600, 0600, 0300, 0300, 0180
  109.  
  110.    'defines the hand cursor (graphics mode only)
  111.    Data E1FF, E1FF, E1FF, E1FF, E1FF, E000, E000, E000
  112.    Data 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000
  113.    Data 1E00, 1200, 1200, 1200, 1200, 13FF, 1249, 1249
  114.    Data F249, 9001, 9001, 9001, 8001, 8001, 8001, FFFF
  115.  
  116.    'defines the hand cursor (graphics mode only)
  117.    Data 0000, 0000, 0000, 0000, 8001, C003, E007, F00F
  118.    Data E007, C003, 8001, 0000, 0000, 0000, 0000, FFFF
  119.    Data 0000, 7FFE, 6006, 3C3C, 1FF8, 0FF0, 07E0, 03C0
  120.    Data 0660, 0C30, 1998, 37EC, 6FF6, 7FFE, 0000, 0000
  121.  
  122. End Sub